home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / ezy_comm / ezy1023.zip / EKIT102.ZIP / STRUCT.PAS < prev   
Pascal/Delphi Source File  |  1992-11-14  |  59KB  |  1,629 lines

  1. (*  Ezycom Structures  Copyright Peter Davies.  All Rights Reserved.
  2.     Revised for Ezycom V1.02 15/08/1992.
  3.  
  4.     May be freely used by 3rd Party Developers for Ezycom.
  5.  
  6.     Written permission must be granted by Peter Davies for
  7.     non-third party use.
  8.  
  9.     Sorry, about the mess, I'll fix it up for Ezycom V1.02 release *)
  10.  
  11. (*  Pascal to C
  12.     typedef char unsigned byte;
  13.     typedef int  unsigned word;
  14.     typedef char unsigned boolean;
  15.     typedef long signed   longint;
  16.  
  17.      All Strings require one extra character.
  18.      The first field of a string [0] is the length of the string *)
  19.  
  20. (*   Turbo Pascal defines
  21.  
  22.      DateTime = Record
  23.         Year,
  24.         Month,
  25.         Day,
  26.         Hour,
  27.         Min,
  28.         Sec   : word;
  29.      end; *)
  30.  
  31. const
  32.     version       = '1.02';
  33.     versionhigh   = 1;
  34.     versionlow    = 2;
  35.     productname   = 'Ezycom';
  36.     copyright     = 'Peter Davies';
  37.     copyrightyear = '1992';
  38.     maxfree       = 685;
  39.     userfree      = 4;
  40.     constantfreespace = 89;
  41.     constantfilefreespace = 816;
  42.     maxnodes     = 128;
  43.     maxaka       = 16;
  44.     maxmess      = 1024;
  45.     maxmessall   = 1024;
  46.     maxfile      = 400;
  47.     maxbaudrec   = 11;
  48.  
  49.     (* Message Types *)
  50.  
  51.     localmail = 0;
  52.     netmail   = 1;
  53.     echomail  = 2;
  54.     passthru  = 3;
  55.     waitthru  = 4;
  56.     allmail   = 5;
  57.  
  58.     (* Ask Types *)
  59.  
  60.     askyes    = 0;
  61.     askno     = 1;
  62.     askask    = 2;
  63.     askaskyes = 2;   (* extended ask defaults to yes *)
  64.     askaskno  = 3;   (* extended ask defaults to no *)
  65.  
  66.     (* Phone Types *)
  67.  
  68.     business  = 0;
  69.     data      = 1;
  70.     nophone   = 2;
  71.  
  72.     (* File Size Types *)
  73.  
  74.     nosize    = 0;
  75.     sizebytes = 1;
  76.     sizekilobytes = 2;
  77.  
  78.     (* Message Kinds Type *)
  79.  
  80.     public        = 0;
  81.     private       = 1;
  82.     privatepublic = 2;
  83.  
  84.     (* Swapping Types *)
  85.  
  86.     SwapwithNone   = 0;
  87.     SwapwithEMS    = 1;
  88.     SwapwithXMS    = 2;
  89.     SwapwithDISK   = 3;
  90.     SwapwithEMSXMS = 4;
  91.     SwapwithXMSEMS = 5;
  92.  
  93.     (* User Attributes *)
  94.     usr1deleted          = 0;
  95.     usr1clrscr           = 1;
  96.     usr1moreprompt       = 2;
  97.     usr1ansicapable      = 3;
  98.     usr1nokill           = 4;
  99.     usr1filepointignore  = 5;
  100.     usr1fullscreened     = 6;
  101.     usr1quietmode        = 7;
  102.     usr2ignorefileratios = 0;
  103.     usr2ibmextended      = 1;
  104.     usr2dateformat       = 2;
  105.     usr2ignorepaging     = 3;
  106.     usr2excludeuser      = 4;
  107.     usr2avatarcapable    = 5;
  108.     usr2ignoretime       = 6;
  109.     usr2ignoremessratio  = 7;
  110.     usr3nopagesound      = 0;
  111.     usr3pageatlogon      = 1;
  112.     usr3holdmailbox      = 2;
  113.     usr3combinedmailbox  = 3;
  114.  
  115.     (* Constant ScanTossAttr *)
  116.     stdupedetection      = 0;
  117.     stkillnullnetmail    = 1;
  118.     stkeepechoarea       = 2;
  119.     stimportmsgssysop    = 3;
  120.     stroutemail          = 4;
  121.     stkillbadarchives    = 5;
  122.     starcmailcompat      = 6;
  123.  
  124.     (* Constant ConstantAttr *)
  125.     casysopaliasinchat   = 0;
  126.     caautocapturechat    = 1;
  127.     cadisplayfullmessage = 2;
  128.     canodelmailbundle    = 3;
  129.  
  130.     (* Config ConfigAttr *)
  131.     comovelocaluploads   = 0;
  132.  
  133. type
  134.      filestr        = string[12];  (* max length of a filename *)
  135.      asktype        = byte;
  136.      phonetype      = byte;
  137.      msgtype        = byte;
  138.      msgkindstype   = byte;
  139.      showfilesizetype = byte;
  140.      maxstr         = string[255];
  141.      userstring     = string[35];
  142.      date           = string[8];
  143.      str2           = string[2];
  144.      str3           = string[3];
  145.      str4           = string[4];
  146.      str8           = string[8];
  147.      str12          = string[12];
  148.      str23          = string[23];
  149.      str30          = string[30];
  150.      str72          = string[72];
  151.      str128         = string[128];
  152.      flagtype       = array[1..4] of byte;
  153.      grouptype      = array[1..4] of byte;
  154.  
  155.      onoffflagtype  = record
  156.         onflags,
  157.         offflags    : flagtype;
  158.      end;
  159.  
  160.      daterecord     = record
  161.         year        : word;
  162.         month       : byte;
  163.         day         : byte;
  164.      end;
  165.  
  166.      netrecord      = record
  167.                      zone,
  168.                      net,
  169.                      node,
  170.                      point   : word;
  171.      end;
  172.  
  173.     (* **********************************************************
  174.  
  175.        Filename:    <configrec.userbasepath>USERS.BBS
  176.  
  177.        Description: Users File
  178.                     Records in parrallel with USERSEXT.BBS
  179.  
  180.        Limitations: 65000 records (users) maximum
  181.  
  182.        ********************************************************** *)
  183.  
  184.         usersrecord    = record
  185.            name           : userstring;
  186.            alias          : userstring;
  187.            password       : string[15];
  188.            security       : word;
  189.            attribute,
  190.               (* Bit 0 : Deleted
  191.                      1 : Clear Screen
  192.                      2 : More Prompt
  193.                      3 : Ansi Capable
  194.                      4 : Don't Kill User
  195.                      5 : File Points Ignore
  196.                      6 : Full Screen Ed
  197.                      7 : Quiet Mode        *)
  198.            attribute2,
  199.               (* Bit 0 : Ignore File Ratios
  200.                      1 : Extended IBM Characters
  201.                      2 : On = MMDDYY Off = DDMMYY
  202.                      3 : Ignore Paging Hours
  203.                      4 : Exclude User
  204.                      5 : Avatar Capable
  205.                      6 : Ignore Menu Time Restrictions
  206.                      7 : Ignore Message Ratios         *)
  207.            attribute3,
  208.               (* Bit 0 : Do Not Sound Page
  209.                      1 : Page on Logon
  210.                      2 : Hold Mailbox
  211.                      3 : Use Combined Mailbox
  212.                    4-7 : [Reserved] *)
  213.            attribute4  : byte;
  214.               (* Bit 0-7 [Reserved] *)
  215.            flags       : FlagType;
  216.            dataphone,
  217.            voicephone  : String[14];
  218.      end;
  219.  
  220.  
  221.     (* **********************************************************
  222.  
  223.        Filename:    <configrec.userbasepath>USERSEXT.BBS
  224.  
  225.        Description: Extended Users Information
  226.                     Records in parrallel with USERS.BBS
  227.  
  228.        ********************************************************** *)
  229.  
  230.  
  231.         usersextrarecord = record
  232.            location       : string[25];
  233.            lasttimedate   : longint;
  234.               (* DOS Packed Date/Time *)
  235.            credit,
  236.               (* Users netmail credit *)
  237.            pending        : word;
  238.               (* Netmail cost pending export *)
  239.            msgsposted,
  240.            nocalls,
  241.            uploads,
  242.            todayk,
  243.            timeused,
  244.            downloads      : word;
  245.            uploadsk,
  246.            downloadsk     : longint;
  247.            screenlength   : byte;
  248.            lastpwdchange  : byte;
  249.            timebanked,
  250.            ksbanked,
  251.            filepoints     : word;
  252.            qwkcompression : byte;
  253.            qwkdaysold     : byte;
  254.            comment        : string[40]; (* Sysop/User Comment *)
  255.            colour1_2,  (* To retrieve the first colour AND 15
  256.                           To retrieve the second colour SHR 4  *)
  257.            colour3_4,
  258.            colour5_6,
  259.            colour7_8,
  260.            bkcolour        : byte;
  261.            sessionfailures : byte; (* Number of Session Failures since last
  262.                                       successful logon *)
  263.            topmenu        : str8;  (* User's Top Menu *)
  264.            filepointsgiven : word;
  265.               (* Number of Filepoints credited since last logon *)
  266.            dateofbirth    : daterecord;
  267.            groups         : grouptype; (* user's group setting (compressed) *)
  268.            regodate,                   (* Start of Registration *)
  269.            firstdate,                  (* Date of First Logon *)
  270.            lastfiledate   : word; (* Last Time a New Files Search was done *)
  271.            defprotocol    : char; (* Blank means no default protocol *)
  272.            timeleft       : word; (* Users remaining time for today *)
  273.            filearea       : word; (* Last file area user used *)
  274.            messarea       : word; (* Last message area user used *)
  275.            qwkmaxmsgs     : word;
  276.            qwkmaxmsgsperarea : word;
  277.            todaybankwk    : integer; (* Kilobytes Withdrawn from Bank Today
  278.                                         Negative Numbers indicate Deposited *)
  279.            forwardto      : userstring; (* forward local mail to *)
  280.            todaycalls     : byte; (* Times the user has called today *)
  281.            todaybankwt    : integer; (* Time Withdrawn from Bank Today
  282.                                         Negative Numbers indicate Deposited *)
  283.                                      (* next byte in 1.03 will be language number *)
  284.            extraspace     : array[1..userfree] of byte;
  285.         end;
  286.  
  287.     (* **********************************************************
  288.  
  289.        Filename:     <userbasepath>LASTCOMB.BBS
  290.  
  291.        Description:  Used be Ezycom for lastread & combined info
  292.  
  293.        Note:         This record adjusts when the number of
  294.                      conferences change (in steps of 16).
  295.                      Eg: 16 conferences takes up HALF of the
  296.                           diskspace of 32 conferences
  297.  
  298.        ********************************************************** *)
  299.  
  300.         userslastrecord = record (* LASTCOMB.BBS *)
  301.            combinedinfo    : word;
  302.            lastreadinfo    : array[0..15] of word;
  303.         end;
  304.  
  305.  
  306.     (* **********************************************************
  307.  
  308.        Filename:    <configrec.menupath>????????.MNU
  309.  
  310.        Description: Menu Structure
  311.                     Record 0 has a different record structure
  312.  
  313.        Mimimum    : 1 record
  314.        Maximum    : 51 records
  315.  
  316.  
  317.        Record 0 Structure
  318.  
  319.        typ     = HiLight Colour
  320.        display = Menu Prompt
  321.        colour  = Menu Prompt Colour
  322.  
  323.        all others are undefined
  324.  
  325.        ********************************************************** *)
  326.  
  327.  
  328.         mnurecord      = record (* *.MNU *)
  329.            typ            : byte;
  330.            security       : word;
  331.            flags          : onoffflagtype;
  332.            display        : string[90];
  333.            hotkey         : char;
  334.               (* Ctrl-A means Automatic Option *)
  335.            miscdata       : string[90];
  336.            colour         : byte;
  337.            securityattr   : byte;
  338.               (* 0 : Greater than/Equal to
  339.                  1 : Greater than
  340.                  2 : Less than/Equal to
  341.                  3 : Less than
  342.                  4 : Equal to
  343.                  5 : Not Equal *)
  344.            timeonline     : byte;
  345.            timestart,
  346.            timeend        : word;
  347.               (* Hours is "* 100" *)
  348.            baudrate       : longint;
  349.            filepoints     : word;
  350.            attribute      : byte;
  351.               (* bit 0 : Test Ratio K
  352.                      1 : Test Message/Call Ratio
  353.                      2 : Test Age <config age> and Over
  354.                      3 : Test Ratio Files
  355.                      4 : Local Keyboard Only
  356.                      5-7 [ Reserved ] *)
  357.             node           : byte;
  358.          end;
  359.  
  360.     (* **********************************************************
  361.  
  362.        Filename:    PROTOCOL.EZY
  363.  
  364.        Description: Protocol Record Structure
  365.  
  366.        Size       : 60 records
  367.  
  368.        ********************************************************** *)
  369.  
  370.  
  371.         protocolrecord = record (* PROTOCOL.EZY *)
  372.            name             : string[15];
  373.            activekey        : char;
  374.            attribute        : byte;
  375.               (* bit 0 = enable/disable
  376.                      1 = batch protocol
  377.                      2 = [ Reserved ]
  378.                      3 = both directions
  379.                      4 = up/down
  380.                      5 = bidirectional
  381.                      6-7 [ Reserved ] *)
  382.            logfilename,
  383.            ctlfilename,
  384.            dnctlstring      : string[60];
  385.            dncmdstring,
  386.            upcmdstring      : string[100];
  387.            uplogkeyword,
  388.            dnlogkeyword,
  389.            uperrkeyword,
  390.            dnerrkeyword,
  391.            uperr2keyword,
  392.            dnerr2keyword    : string[10];
  393.            xfernamewordnum  : Byte;
  394.            xfercpswordnum   : byte;
  395.            security         : word;
  396.            flags            : flagtype;
  397.            efficiency       : byte;
  398.         end;
  399.  
  400.  
  401.      configrecord = record (* CONFIG.EZY *)
  402.                      version      : str8;
  403.                      deflanguage  : str8;
  404.    (* unused *)      freespace50  : array[1..68] of byte;
  405.                      logpath,
  406.                      textpath,
  407.                      menupath,
  408.                      mnurampath,
  409.                      netmailpath,
  410.                      nodelistpath,
  411.                      msgpath,
  412.                      filepath,
  413.    (* unused *)      freespace51,
  414.                      bipath,
  415.                      temppath,
  416.                      userbasepath,
  417.                      avatarpath,
  418.                      ascpath,
  419.                      asclowpath,
  420.                      filemaint,
  421.                      fileattachpath,
  422.                      soundpath,
  423.                      fastindexpath : string[60];
  424.                      systempwd,                 (* Password to Logon System *)
  425.                      sysoppwd,                  (* Password to Keyboard *)
  426.                      newuserpwd   : string[15]; (* Password for Newuser *)
  427.                      newtopmenu   : str8;       (* NewUser TopMenu *)
  428.    (* unused *)      freespace52  : array[1..4] of byte;
  429.                      inboundmail,
  430.                      outboundmail,
  431.                      uploadpath,
  432.                      swapfile,
  433.                      multipath    : string[60];
  434.                      brackets     : string[2];
  435.                      inactivitytime,
  436.                      minmesscheck,
  437.                      maxlogintime : byte;
  438.    (* unused *)      freespace53  : byte;
  439.                      answerdelay  : byte;
  440.                      shellswap,
  441.                      highbit,
  442.                      disppass,
  443.                      asklocalpass,
  444.                      fastlogon,
  445.                      sysopremote,
  446.                      printerlog,
  447.                      phone1ask,
  448.                      colourask,
  449.                      aliasask,
  450.                      dobask,
  451.                      phoneforce,
  452.                      direct_video,
  453.                      snow_check   : boolean;
  454.    (* unused *)      freespace54  : byte;
  455.                      screen_blank : byte;
  456.                      oneword      : boolean;
  457.                      checkmail,
  458.                      checkfile,
  459.                      ansiask,
  460.                      fullscreenask,
  461.                      clearask,
  462.                      moreask,
  463.                      avatarask,
  464.                      extendask,
  465.                      usdateask    : asktype;
  466.                      phone2ask    : boolean;
  467.                      phoneformat  : string[14];
  468.                      nameprompt,
  469.                      pwdprompt,
  470.                      shellprompt,
  471.                      shell2prompt,
  472.                      enterprompt,
  473.                      chatprompt,
  474.                      listprompt   : string[60];
  475.                      f7keylinetop,
  476.                      f7keylinebot : string[79];
  477.    (* unused *)      freespace55  : array[1..84] of byte;
  478.                      chat2prompt,
  479.                      screenlengthprompt, (* *)
  480.                      screenclearprompt,  (* *)
  481.                      locationprompt,
  482.                      freeprompt,
  483.                      loadprompt,
  484.                      avatarprompt,       (* *)
  485.                      aliasprompt  : string[60];
  486.                      security,
  487.                      logonsecurity : word;
  488.                      flags         : flagtype;
  489.                      minpasslength,
  490.    (* Constant *)    dispfwind,                (* Status Bar Colour *)
  491.    (* Constant *)    dispbwind,                (* Status Bar Colour *)
  492.    (* Constant *)    disppopupf,               (* Popup Forground  *)
  493.    (* Constant *)    disppopupborder,          (* Popup Border     *)
  494.    (* Constant *)    disppopupb,               (* Popup Background *)
  495.    (* Constant *)    dispf        : byte;      (* Foreground Colour *)
  496.    (* Unused *)      freespace56,
  497.                      comport,
  498.                      passlogons   : byte;
  499.                      doblogon     : byte;
  500.                      printerport,
  501.                         (* 0 : LPT1
  502.                            1 : LPT2
  503.                            2 : LPT3
  504.                            3 : COM1
  505.                            4 : COM2
  506.                            5 : COM3
  507.                            6 : COM4  *)
  508.                      passtries      : byte;
  509.                      topmenu        : string[8];
  510.    (* unused *)      freespace100   : array[1..4] of byte;
  511.    (* constant *)    watchmess,
  512.    (* constant *)    netmailcredit,
  513.                      ansiminbaud,
  514.    (* unused *)      freespace57,
  515.                      slowbaud,
  516.                      minloginbaud   : word;
  517.                      lowsecuritystart,
  518.                      lowsecurityend,
  519.                      slowstart,
  520.                      slowend        : word;
  521.                      quotestring    : string[5];
  522.    (* unused *)      freespace58    : byte;
  523.                      offhook        : boolean;
  524.                      forcecrashmail,
  525.                      optioncrashmail,
  526.                      netmailfileattach : word;
  527.    (* Constant *)    popuphighlight    : byte;     (* Popup Highlight Colour *)
  528.    (* unused *)      freespace59       : byte;
  529.                      maxpages,
  530.                      maxpagefiles,
  531.                      pagelength     : byte;
  532.                      pagestart      : array[0..6] of word;
  533.    (* constant *)    pagemessboard,
  534.                         (* Message Board for Paging (0=Not In Use) *)
  535.                      localfattachsec,
  536.                      sectouploadmess,
  537.                      sectoupdateusers,
  538.                      readsecnewecho,
  539.                      writesecnewecho,
  540.                      sysopsecnewecho,
  541.                      secreplyvianetmail : word;
  542.                      netmailkillsent    : asktype;
  543.                      swaponarchive      : byte;
  544.  
  545.    (* unused *)      freespace60    : array[1..9] of byte;
  546.  
  547.    (* Constant *)    popuptext      : byte;           (* Popup Text Colour *)
  548.                      pageend        : array[0..6] of word;
  549.    (* unused *)      freespace61    : array[1..22] of byte;
  550.                      incomingcallstart,
  551.                      incomingcallend : word;
  552.  
  553.                      fp_upload      : word; (* File Points Upload Credit *)
  554.  
  555.                      altf           : array[1..10] of string[60];
  556.                      ctrlf          : array[1..10] of string[40];
  557.    (* unused   *)    freespace63    : array[1..4] of byte;
  558.                      fp_credit      : word; (* Newuser Filepoints *)
  559.                      ks_per_fp,             (* Number of Kilobytes per FP *)
  560.    (* unused *)      oldfp_upload,          (* Old Filepoints Upload Credit *)
  561.                      rego_warn_1,
  562.                      rego_warn_2    : byte;
  563.    (* unused   *)    freespace64    : array[1..2] of byte;
  564.    (* constant *)    min_space_1    : word;
  565.                      swapbimodem    : boolean;
  566.                      modembusy      : boolean; (* Toggle DTR or ATH1 *)
  567.                      scrheight      : boolean; (* 43/50 line mode *)
  568.                      msgtmptype     : boolean;
  569.                         (* True  = MSGTMP
  570.                            False = MSGTMP.<node> *)
  571.                      swapupload     : boolean;
  572.                      phonelogon     : byte;
  573.                      carrierdetect  : byte; (* Carrier Detect (Default=$80) *)
  574.                      newfileshighlight : boolean;
  575.                      max_descrip    : byte;
  576.                      min_descrip    : byte;
  577.                      requestreceipt : word;
  578.                      ushowdate      : boolean;
  579.                      ufilesizek     : showfilesizetype;
  580.                      uuploader,
  581.                      udownloadcount,
  582.  
  583.    (* unused *)      freespace4,
  584.  
  585.                      ushowsecurity,
  586.                      sshowdate      : boolean;
  587.                      sfilesizek     : showfilesizetype;
  588.                      suploader,
  589.                      sdownloadcount,
  590.  
  591.    (* Unused *)      freespace5,
  592.  
  593.                      sshowsecurity,
  594.                      ushowtime,
  595.                      ushowfp,
  596.                      sshowtime,
  597.                      sshowfp         : boolean;
  598.                      fp_percent      : word; (* Download Filepoints Credit *)
  599.                      autodetect      : byte;
  600.                         (* Bit 0 : Auto Detect ANSI
  601.                                1 : ANSI Detect for NewUser
  602.                                2 : Auto Detect IEMSI
  603.                                3 : IEMSI Detect for NewUser
  604.                                4-7 [Reserved] *)
  605.                      dispsecurityfile,
  606.                      askforpagereason,
  607.                      delincompletefiles : boolean;
  608.    (* unused *)      freespace65      : byte;
  609.    (* Constant *)    swaponfeditview  : byte;
  610.  
  611.    (* Unused *)      freespace6,
  612.  
  613.                      secfileschar,
  614.                      passchar        : char;
  615.                      localinactivity : boolean;
  616.    (* Unused *)      conversiononmaster : byte;
  617.                      leftbracket     : string[1];
  618.                      rightbracket    : string[1];
  619.                      ignorefp        : word; (* Min Security to Ignore FPs *)
  620.                      menuminage      : byte; (* Minimum Age for Age Checks *)
  621.    (* unused *)      freespace66     : byte;
  622.                      modemeff        : array[1..maxbaudrec] of word;
  623.                      modembaud       : array[1..maxbaudrec] of word;
  624.                      modemconnect    : array[1..maxbaudrec] of string[15];
  625.    (* unused *)      freespace67     : array[1..10] of byte;
  626.                      configattr      : word;
  627.                         (* Bit  0 : Move Local Uploads
  628.                                1-15 [Reserved] *)
  629.                      usercol1_2,
  630.                      usercol3_4,
  631.                      usercol5_6,
  632.                      usercol7_8,
  633.                      userbkcol       : byte;
  634.                      newusercol2     : byte;
  635.                      chstatcol       : byte;
  636.                      getentercol     : byte;
  637.                      usdateforsysop  : boolean;
  638.                      ezyovrpath      : string[60];
  639.    (* Unused *)      sysfree3        : userstring;
  640.                      ovrems          : boolean;
  641.                      swapezy         : byte;
  642.                      filesecpath     : string[60];
  643.    (* unused *)      freespace28     : boolean;
  644.                      multitasker     : byte;
  645.                      (*  0 = Do Not Detect or Use Any MultiTasker
  646.                          1 = Auto-Detect
  647.                          2 = Desqview
  648.                          3 = Double DOS
  649.                          4 = OS 2
  650.                          5 = MultiDOS Plus
  651.                          6 = Taskview
  652.                          7 = Topview
  653.                          8 = PC MOS
  654.                          9..255 [Reserved] *)
  655.                      maxbaud         : word; (* longint in 1.02 *)
  656.                      lockedport      : boolean;
  657.                      filereqsec      : word;
  658.                      autoanswer      : boolean;
  659.                      initresponse    : string[10];
  660.                      ringstring      : string[10];
  661.                      inittries       : byte;
  662.                      initstring1     : string[60];
  663.                      initstring2     : string[60];
  664.                      busystring      : string[20];
  665.                      answerstring    : string[20];
  666.                      mailerstring    : string[60];
  667.                      modemstart      : word;
  668.                      modemend        : word;
  669.                      modemdelay      : byte;
  670.                      sendbreak       : boolean;
  671.                      externaleditor  : string[60];
  672.                      defaultorigin   : string[50];
  673.                      connectfax      : string[15];
  674.    (* unused   *)    freespace22     : array[1..16] of byte;
  675.                      uploadcredit    : word;
  676.                         (* Upload Credit Percentage *)
  677.    (* Unused *)      sysfree4        : string[35];
  678.                      shownewfileschar : byte;
  679.                         (* 0 - No
  680.                            1 - ASCII Only
  681.                            2 - Always *)
  682.    (* unused *)      zonea            : array[1..16] of word;
  683.                      neta             : array[1..16] of word;
  684.                      nodea            : array[1..16] of word;
  685.                      pointa           : array[1..16] of word;
  686.    (* Unused   *)    freespace24     : array[1..16] of word;
  687.    (* Unsued   *)    freespace9      : array[1..16] of string[20];
  688.                      nocarrierstring : string[20];
  689.                      guestaccount    : userstring;
  690.                      freespace       : array[1..maxfree] of byte;
  691.                   end;
  692.  
  693.         (* Note: Strings that are marked CONSTANT, should be constant
  694.            across all CONFIG.XXX. *)
  695.  
  696.     (* **********************************************************
  697.  
  698.        Filename:    CONSTANT.EZY
  699.  
  700.        Description: Constant Configuration Information
  701.  
  702.        ********************************************************** *)
  703.  
  704.         constantrecord    = record
  705.            version         : string[8];
  706.            system          : string[40];
  707.            sysopname,
  708.            sysopalias      : userstring;
  709.            systemlocation  : string[35];
  710.            multiline       : boolean; (* multiline operation *)
  711.            maxmess,                   (* maximum usable message areas *)
  712.            maxfile,                   (* maximum usable file areas *)
  713.            watchmess,                 (* watchdog message area *)
  714.            pagemessboard,             (* paging message board *)
  715.            badpwdmsgboard  : word;    (* bad logon message board *)
  716.            mintimeforcall  : byte;    (* minimum time to register call today *)
  717.            freespace2      : array[1..11] of byte;
  718.            scantossattr,              (* ezymail scan/toss info *)
  719.               (* Bit 0 : Dupe Detection
  720.                      1 : Kill Null Netmail
  721.                      2 : Keep EchoArea Node Receipts
  722.                      3 : Import Messages to Sysop
  723.                      4 : Route Mail (Off = Direct)
  724.                      5 : Kill Bad Archives
  725.                      6 : ArcMail 0.6 Compatability
  726.                     7-15 [Reserved] *)
  727.            constantattr,
  728.               (* Bit 0 : Sysop Alias in Chat
  729.                      1 : Auto Log Chat
  730.                      2 : Display Full Message to User
  731.                      3 : Do not delete outbound mail bundles with no .MSG
  732.                     3-15 [Reserved] *)
  733.            maxmsgsrescan   : word;    (* Maximum msgs to rescan (0=disable) *)
  734.            qwkfilename     : str8;    (* Unique QWK Mail filename *)
  735.            qwkmaxmail      : word;    (* Maximum Msgs for QWK archive *)
  736.            qwkmsgboard     : word;    (* Bad QWK Message Board *)
  737.            netaddress      : array[1..maxaka] of netrecord;
  738.            netmailboard    : array[1..maxaka] of word;
  739.            newareagroup    : array[1..maxaka] of char;
  740.            newareastmess   : array[1..maxaka] of word;
  741.                                         (* New area start msg board *)
  742.            quotestring     : string[5]; (* quote messsage string *)
  743.            swaponezymail   : byte;      (* ezymail swapping information *)
  744.            unknownarea     : byte;      (* unknown new area tag action *)
  745.               (* 0 : Kill Messages
  746.                  1 : Make a New EchoMail Area
  747.                  2 : Make a New PassThru Area *)
  748.            swaponfeditview : byte;      (* FEdit swapping information *)
  749.            swaponarchive   : byte;      (* Ezymaint swapping information *)
  750.            minspaceupload  : word;      (* minimum space to upload *)
  751.            textinputcolour : byte;      (* default text input colour *)
  752.            badmsgboard     : word;      (* Bad echomail msg board *)
  753.            freespace       : array[1..constantfreespace] of byte;
  754.         end;
  755.  
  756.         compressrecord = record
  757.            echounarccmd    : array[0..5] of String[12];
  758.            echounarcpar    : array[0..5] of String[18];
  759.            echoarccmd      : array[0..5] of String[12];
  760.            echoarcpar      : array[0..5] of String[18];
  761.         end;
  762.  
  763.         domainstr  = string[20];
  764.  
  765.         domaintype = array[1..maxaka] of domainstr;
  766.  
  767.         constantfilefreespacetype = array[1..constantfilefreespace] of byte;
  768.  
  769. const
  770.         startofcompress = sizeof(constantrecord) + sizeof(constantfilefreespacetype);
  771.         startofdomain   = startofcompress + sizeof(compressrecord);
  772.  
  773. type
  774.         constantfilerecord = record
  775.            constant  : constantrecord;
  776.            freespace : constantfilefreespacetype;
  777.            compress  : compressrecord;
  778.            domain    : domaintype;
  779.         end;
  780.  
  781.         limitsrecord = record (* LIMITS.EZY *)
  782.            security     : word; (* Security level *)
  783.            time         : word; (* Time limit per day *)
  784.            limit        : array[1..maxbaudrec] of word;
  785.            ratio        : byte; (* File Ratio *)
  786.            credit       : word; (* File Ratio Credit *)
  787.            ratiok       : byte; (* Kilobyte Ratio *)
  788.            creditk      : word; (* Kilobyte Ratio Credit *)
  789.            regodays     : word; (* Registration in Days *)
  790.            creditmess   : word; (* PCR Credit *)
  791.            mess         : word; (* PCR (%) *)
  792.            timepercall  : word; (* Time limit per call   0=Disabled *)
  793.            callsperday  : byte; (* Maximum Calls Per Day 0=Disabled *)
  794.            maxbankwk,           (* Maximum Withdraw Kilobytes Bank *)
  795.            maxbankwt,           (* Maximum Withdraw Time Bank *)
  796.            maxbankdk,           (* Maximum Deposit Kilobytes Bank *)
  797.            maxbankdt,           (* Maximum Deposit Time Bank *)
  798.            maxkbank,            (* Maximum Allowable Kilobytes in Bank *)
  799.            maxtbank     : word; (* Maximum Allowable Time in Bank *)
  800.         end;
  801.  
  802.         filepathrecord = record (* FILEPATH.EZY *)
  803.            filepath    : string[60];
  804.            security    : word;
  805.            flags       : flagtype;
  806.            uploadarea  : word;
  807.            password    : string[8];
  808.            attribute   : byte;
  809.               (* Bit 0 = CD Rom Path
  810.                      1 = Show as Not Found
  811.                      2 = Free Downloads
  812.                      3 = Age Check
  813.                      4-7 [Reserved] *)
  814.         end;
  815.  
  816.         filesecrecord = record (* FILESEC.EZY *)
  817.            filename    : string[12];
  818.            security    : word;
  819.            flags       : flagtype;
  820.            password    : string[8];
  821.            attribute   : byte;
  822.              (*  Bit 0 = [Reserved]
  823.                      1 = Show as Not Found
  824.                      2 = Free Downloads
  825.                      3 = Age Check
  826.                      4-7 [Reserved] *)
  827.         end;
  828.  
  829.         filelistrecord = record (* FILEXXX.EZY *)
  830.            filename    : string[12];
  831.            description : string[50];
  832.            fsize       : longint;
  833.            fdate       : word;
  834.            attribute   : byte;
  835.               (* Bit 0 : checked
  836.                      1 : [Reserved]
  837.                      2 : offline
  838.                      3 : [Reserved]
  839.                      4 : private
  840.                      5 : deleted
  841.                      6 : [Reserved]
  842.                      7 : security *)
  843.            attribute2  : byte;
  844.               (* bit 0-7 [Reserved] *)
  845.            uploader    : userstring;
  846.            downloads   : word;
  847.         end;
  848.  
  849.         filerecord = record (* FILES.EZY *)
  850.            name        : string[30];
  851.            attribute,
  852.               (* bit 0 : keep files offline
  853.                      1 : offline allowed
  854.                      2 : sortby date
  855.                      3 : sortby alpha
  856.                      4 : master list
  857.                      5 : Age Check to View
  858.                      6-7 [ Reserved ] *)
  859.            convert     : byte;
  860.               (* 0     : none
  861.                  1     : zip
  862.                  2     : lzh
  863.                  3     : arj
  864.                  4     : pak
  865.                  5     : arc
  866.                  6     : zoo
  867.                  7-255 : [ Reserved ] *)
  868.            filegroup   : char;
  869.            uptemplate,
  870.            upfilepath  : word;
  871.  
  872.            freespace   : longint;
  873.  
  874.            security    : word;
  875.            flags       : flagtype;
  876.            syssecurity : word;
  877.            sysflags    : flagtype;
  878.         end;
  879.  
  880.         predownloadrecord = record (* EZYDOWN.<node> *)
  881.            filename      : string[12];
  882.            locationfile  : maxstr;
  883.            fsize         : longint; (* KiloBytes *)
  884.            freedown      : boolean;
  885.            timetodown    : longint; (* Seconds *)
  886.            deleted       : boolean;
  887.         end;
  888.  
  889.         preuploadrecord = record  (* EZYUP.<node> *)
  890.            filename      : string[12];
  891.            description   : string[50];
  892.            isdupe        : boolean;
  893.         end;
  894.  
  895.         maint_record = record (* MAINT1.BBS, MAINT2.BBS *)
  896.            filename      : string[12];
  897.            filepoint     : word;
  898.            downloader    : userstring;
  899.            uploader      : userstring;
  900.         end;
  901.  
  902.         fastpointerrecord = array[1..730] of longint; (* FFPTR.EZY *)
  903.  
  904.         fastindexrecord = record (* FFIDX.EZY *)
  905.            name     : string[12];
  906.            template : word;    (* Filearea 1 -> *)
  907.            deleted  : boolean;
  908.         end;
  909.  
  910.     (* **********************************************************
  911.  
  912.        Filename:     <multipath>ONLINE.BBS
  913.  
  914.        Description:  Used by Ezycom to store online information
  915.  
  916.        Minimum Size: 1 Record
  917.        Maximum Size: 250 Records
  918.  
  919.        ********************************************************** *)
  920.  
  921.         onlinerecord   = record
  922.            name     : userstring;
  923.            alias    : userstring;
  924.            status   : byte;
  925.            (* 0 - Active
  926.               1 - [Reserved]
  927.               2 - Downloading
  928.               3 - Uploading
  929.               4 - BiModem
  930.               5 - Message Browsing
  931.               6 - Door
  932.               7 - Chat with Sysop
  933.               8 - Chat with Other Users Channel 000
  934.               ...................................
  935.             207 - Chat with Other Users Channel 199 (200 channels)
  936.             208 - 252 [Reserved]
  937.             253 - Node Not Active in Any Way
  938.             254 - User Logging On
  939.             255 - Waiting for Caller *)
  940.            attribute : byte;
  941.            (* Bit 0 - Quiet Do Not Disturb *)
  942.            baud     : longint;
  943.            location : string[25];
  944.         end;
  945.  
  946.     (* **********************************************************
  947.  
  948.        Filename:     <multipath>MESSNODE.<node>
  949.  
  950.        Description:  Used by Ezycom for conferencing
  951.  
  952.        Minimum Size: 0 Records (Maybe not present!)
  953.        Maximum Size: Unlimited
  954.  
  955.        Sharing:
  956.             Writing: Denynone + WriteOnly
  957.             Reading: Denyall + ReadWrite (Truncate after read)
  958.  
  959.        ********************************************************** *)
  960.  
  961.         multimessagerecord = record
  962.             from           : userstring;
  963.             fromnode       : word;
  964.             message        : string[80];
  965.             private        : boolean;
  966.         end;
  967.  
  968.     (* **********************************************************
  969.  
  970.        Filename:     <userbase>BESTSTAT.BBS
  971.  
  972.        Description:  Used by Ezycom to store best user stats
  973.  
  974.        Minimum Size: 0 Records (Maybe not present!)
  975.        Maximum Size: 200 Records
  976.  
  977.        ********************************************************** *)
  978.  
  979.         bestuserrecord     = record
  980.            bestname       : array[1..7] of userstring;
  981.            (* BestName[1] is for BestMessages
  982.               BestName[2] is for BestCalls
  983.               .....
  984.               BestName[7] is for BestDownK *)
  985.            bestmessages,
  986.            bestcalls,
  987.            bestups,
  988.            bestdns,
  989.            bestfps        : word;
  990.            bestupk,
  991.            bestdownk      : longint;
  992.         end;
  993.  
  994.     (* **********************************************************
  995.  
  996.        Filename:     <msgpath>\AREA<<area-1>/4+1>\MSGH<area>.BBS
  997.  
  998.        Description:  Used by Ezycom to store message header
  999.  
  1000.        ********************************************************** *)
  1001.  
  1002.         msghdrrecord   = record
  1003.            prevreply,
  1004.            nextreply      : word;
  1005.               (* 0 = No Reply Chain *)
  1006.            startposition,
  1007.               (* Physical Start Position in MSGT???.BBS *)
  1008.            messagelength  : longint;
  1009.              (* Message Length including Null Terminator *)
  1010.            destnet,
  1011.            orignet        : netrecord;
  1012.            cost           : word;
  1013.            msgattr,
  1014.               (*  Bit 0 : Deleted
  1015.                       1 : Netmail pending export
  1016.                       2 : [Reserved]
  1017.                       3 : Private
  1018.                       4 : Received
  1019.                       5 : Echomail pending export
  1020.                       6 : Locally generated msg
  1021.                       7 : Do not kill message *)
  1022.            netattr,
  1023.               (*  Bit 0 : Kill/sent
  1024.                       1 : Sent
  1025.                       2 : File Attach
  1026.                       3 : Crash
  1027.                       4 : File Req
  1028.                       5 : Request Receipt
  1029.                       6 : Audit Request
  1030.                       7 : Is a Return Receipt *)
  1031.            extattr   : byte;
  1032.               (*  Bit 0-7 [Reserved] *)
  1033.            posttimedate : longint;
  1034.               (* DOS Format Packed DateTime *)
  1035.            recvtimedate : longint;
  1036.               (* DOS Format Packed DateTime *)
  1037.            whoto,
  1038.            whofrom        : userstring;
  1039.            subject        : string[72];
  1040.         end;
  1041.  
  1042.     (* **********************************************************
  1043.  
  1044.        Filename:     <msgpath>\AREA<<area-1>/4+1>\MSGT<area>.BBS
  1045.  
  1046.        Description:  Used by Ezycom to store message text
  1047.  
  1048.        ********************************************************** *)
  1049.  
  1050.         (* Message Text
  1051.  
  1052.                 Each text part of the message starts at 'startposition',
  1053.            and continues on until a NULL terminator is found, or end
  1054.            of file is reached (shouldn't happen, but just in case).  The
  1055.            message text length is limited by Turbo Pascal to 16 Meg
  1056.            in size.  Each message is contained of plain text, with 0x08D
  1057.            terminators for wrapped lines or 0x0D terminators for hard
  1058.            carriage returns.  No line of text should exceed 79 characters
  1059.            excluding the terminator *)
  1060.  
  1061.     (* **********************************************************
  1062.  
  1063.        Filename:     <msgpath>MSGFAST.BBS
  1064.  
  1065.        Description:  Used by Ezycom for mail checks
  1066.  
  1067.        ********************************************************** *)
  1068.  
  1069.         msgfastrecord  = record
  1070.            whoto     : longint;
  1071.               (* standard 32 Bit CRC on whoto in MSGH???.BBS
  1072.                  Username is CRCd in UPPERCASE, and does not
  1073.                  include null terminator or length byte *)
  1074.            msgboard  : word;
  1075.            msgnumber : word;
  1076.         end;
  1077.  
  1078.     (* **********************************************************
  1079.  
  1080.        Filename:     <msgpath>MSGEXPRT.BBS
  1081.  
  1082.        Description:  Used by Ezycom to tell EzyNet/EzyMail whether
  1083.                      an area needs scanning or not
  1084.  
  1085.        ********************************************************** *)
  1086.  
  1087.         needscanrecord = array[1..maxmess] of boolean;
  1088.  
  1089.     (* **********************************************************
  1090.  
  1091.        Filename:     <msgpath>MSGREPLY.BBS
  1092.  
  1093.        Description:  Used by MsgComp to tell it which
  1094.                      conference(s) need reply chain
  1095.                      linking
  1096.  
  1097.        ********************************************************** *)
  1098.  
  1099.         needreplytype   = array[1..maxmess] of boolean;
  1100.  
  1101.     (* **********************************************************
  1102.  
  1103.        Filename:     <msgpath>MSGCOUNT.BBS
  1104.  
  1105.        Description:  Used by Ezycom and Utilities for
  1106.                      message area counting.  You must lock
  1107.                      EACH two bytes, then update/read it,
  1108.                      then unlock it to update a message area
  1109.                      count.  Reading the number of records of
  1110.                      MSGHxxx.BBS gives the same effect as
  1111.                      reading the conferences count.
  1112.  
  1113.        ********************************************************** *)
  1114.  
  1115.         msgareacounttype = array[1..maxmess] of word;
  1116.  
  1117.  
  1118.     (* **********************************************************
  1119.  
  1120.        Filename:     <systempath>MESSAGES.EZY
  1121.  
  1122.        Description:  Used by Ezycom to store message areas
  1123.  
  1124.        Size:         1024 records
  1125.  
  1126.        ********************************************************** *)
  1127.  
  1128.         messagerecord  = record
  1129.            name           : string[30];
  1130.            areatag        : string[30];
  1131.            qwkname        : string[12];
  1132.            typ            : msgtype;
  1133.            msgkinds       : msgkindstype;
  1134.            attribute,
  1135.            (* Bit 0 : Allow Aliases
  1136.                   1 : Use Alias
  1137.                   2 : Use Alias, Ask for Aliases
  1138.                   3 : Test Age (use config age)
  1139.                   4 : Combined Area Access
  1140.                   5 : Local File attaches
  1141.                   6 : Keep Private Bit on Incoming EchoMail
  1142.                   7 : Security *)
  1143.            attribute2,
  1144.            (* Bit 0 : Show Seenby Lines
  1145.                   1 : Forced Mail Check
  1146.                   2 : Tiny Seenbys
  1147.                   3-4 [Reserved]
  1148.                   5 : Areafix Info Visible
  1149.                   6 : Initial Combined Area Access
  1150.                   7 : Do Not Use in Template *)
  1151.            attribute3     : byte;
  1152.            dayskill,
  1153.            recvkill       : byte;
  1154.            countkill,
  1155.            kilobytekill,
  1156.            readsecurity   : word;
  1157.            readflags      : flagtype;
  1158.            writesecurity  : word;
  1159.            writeflags     : flagtype;
  1160.            sysopsecurity  : word;
  1161.            sysopflags     : flagtype;
  1162.            originline     : string[50];
  1163.            originaddress  : byte;
  1164.            seenby         : array[1..maxaka div 8] of byte;
  1165.            areagroup,
  1166.            messgroup      : char;
  1167.            destnodes      : array[1..maxnodes div 8] of byte;
  1168.            (* Nodes  1 to  8 - DestNode[1]
  1169.               Nodes  9 to 16 - DestNode[2]
  1170.               Nodes 17 to 24 - DestNode[3]
  1171.               etc *)
  1172.            echomailfeed   : byte; (* 0=No Uplink *)
  1173.         end;
  1174.  
  1175.     (* **********************************************************
  1176.  
  1177.        Filename:     <systempath>ECHOMGR.EZY
  1178.  
  1179.        Description:  Used by Ezycom to store node information
  1180.  
  1181.        Size:         128 records
  1182.  
  1183.        ********************************************************** *)
  1184.  
  1185.         echomgrrecord = record
  1186.            destnet     : netrecord;
  1187.            redirectto  : byte;
  1188.            groups      : grouptype; (* compressed groups A thru Z *)
  1189.            compress    : byte;
  1190.            (* 0 : Compress to ZIP
  1191.               1 : Compress to LZH
  1192.               2 : Compress to ARJ
  1193.               3 : Compress to ARC
  1194.               4 : Compress to PAK
  1195.               5 : Compress to ZOO
  1196.               6 : Compress to SQZ *)
  1197.            attribute   : byte;
  1198.            (* Bit 0 : Node Active
  1199.                   1 : Crash Mail
  1200.                   2 : Hold Mail
  1201.                   3 : Can Create New Echos
  1202.                   4 : Add to Export on New Echo
  1203.                   5 : Can Delete/Rename Areas
  1204.                   6 : Direct Mail (Off=Routed Mail)
  1205.                   7 [Reserved] *)
  1206.            passwordto,
  1207.            passwordfr  : string[20];
  1208.            dayshold,
  1209.            sendpkttype : byte;
  1210.            (* 0 : Type 2
  1211.               1 : Type 2+
  1212.             2-255 [Reserved] *)
  1213.            maxpktsize,
  1214.            maxarcksize : word;
  1215.         end;
  1216.  
  1217.  
  1218.     (* **********************************************************
  1219.  
  1220.        Filename:     EVENTS.EZY (multinode file)
  1221.  
  1222.        Description:  Used by Ezycom to store event information
  1223.  
  1224.        Minimum Size: 1 record
  1225.        Maximum Size: 65000 records
  1226.  
  1227.        ********************************************************** *)
  1228.  
  1229.  
  1230.         eventrecord = record
  1231.            attribute   : byte;
  1232.               (* Bit 0 = Enabled *)
  1233.            starttime   : word;
  1234.               (* Hi  Bit = Hour
  1235.                  Low Bit = Min *)
  1236.            errorlevel  : byte;
  1237.            days        : byte;
  1238.               (* Bit 0 : Sunday
  1239.                      1 : Monday
  1240.                          ...
  1241.                      6 : Saturday
  1242.                      7 : [ Reserved ] *)
  1243.            lasttimerun : word;
  1244.         end;
  1245.  
  1246.     (* **********************************************************
  1247.  
  1248.        Filename:    <systempath>TODAY.BBS
  1249.                     <systempath>YESTER.BBS
  1250.  
  1251.        Description: Used by Ezycom to today's/yesterday's callers
  1252.  
  1253.        ********************************************************** *)
  1254.  
  1255.        ontodayrecord = record
  1256.           line        : byte;
  1257.           name        : userstring;
  1258.           alias       : userstring;
  1259.           location    : string[25];
  1260.           baudrate    : word;
  1261.           logontime   : word;
  1262.           logofftime  : word;
  1263.           didwhat     : byte;
  1264.           (* Bit 0 : (N) NewUser
  1265.                  1 : (U) Upload
  1266.                  2 : (D) Download
  1267.                  3 : (R) Read Mail
  1268.                  4 : (S) Sent Mail
  1269.                  5 : (O) Outside
  1270.                  6 : (C) Chat to Sysop and/or User
  1271.                  7 : (P) Paged *)
  1272.        end;
  1273.  
  1274.     (* **********************************************************
  1275.  
  1276.        Filename:    <systempath>TIME<node>.BBS
  1277.  
  1278.        Description: Used by Ezycom to store usage information
  1279.  
  1280.        ********************************************************** *)
  1281.  
  1282.        useagerecord  = record
  1283.           startdate      : word;
  1284.           busyperhour    : array[0..23] of longint; (* Minutes Used *)
  1285.           busyperday     : array[0..6]  of longint; (* Minutes Used *)
  1286.        end;
  1287.  
  1288.     (* **********************************************************
  1289.  
  1290.        Filename:    <systempath>MSGINFO.<node>
  1291.  
  1292.        Description: Used by Ezycom and EzyEdit to interface to
  1293.                     each other
  1294.  
  1295.        ********************************************************** *)
  1296.  
  1297.        fserecord      = record       (* MSGINFO.<node> *)
  1298.           whofrom      : userstring; (* User Who wrote message *)
  1299.           orignet      : netrecord;  (* From Net Address *)
  1300.           whoto        : userstring; (* User Who message is to *)
  1301.           destnet      : netrecord;  (* To Net Address *)
  1302.           subject      : string[72]; (* Subject of message *)
  1303.           returnstatus : byte;       (* Return Status *)
  1304.           (*   0 : FSE Record Not Used
  1305.                1 : Message Saved
  1306.                2 : Message Aborted
  1307.                3 : User  Inactivity
  1308.                4 : User  Hungup
  1309.                5 : Sysop Hungup
  1310.            6-255 : Reserved *)
  1311.           attribute    : byte;
  1312.           (*   Bit 0 : Can Change Subject
  1313.                    1 : Can Change Whoto
  1314.                    2 : Can Change Private
  1315.                    3 : Private Message
  1316.                    4 : Is Message Forwarded (False = Quoted)
  1317.                        (Providing MSGTMP.<node> exists)
  1318.                    5 : Netmail Message
  1319.                    6 : Avatar Capable (ANSI if not set)
  1320.                    7 : EchoMail Message *)
  1321.           baudrate,
  1322.           lockedbaud : longint;
  1323.           comport    : word;
  1324.           screenlength : byte;
  1325.           timeleft     : word;
  1326.        end;
  1327.  
  1328.  
  1329.  
  1330.     (* **********************************************************
  1331.  
  1332.        Filename:    <msgbasepath>MSGRSCAN.BBS
  1333.  
  1334.        Description: Used by EzyNet and EzyMail for Rescanning a
  1335.                     Message Area for a particular node
  1336.  
  1337.        ********************************************************** *)
  1338.  
  1339.        rescanrecord = record
  1340.           nodetorescan : byte;
  1341.           msgboard     : word;
  1342.        end;
  1343.  
  1344.     (* **********************************************************
  1345.  
  1346.        Filename:    <msgbasepath>MSGSTATS.BBS
  1347.  
  1348.        Description: Written by EzyMail for echomail statistics
  1349.  
  1350.        ********************************************************** *)
  1351.  
  1352.        msgstatsrecord = record
  1353.           tossedboard  : array[1..maxmessall]  of word;
  1354.              (* Number of Messages Tossed to Msg Board *)
  1355.           scannedboard : array[1..maxmessall]  of word;
  1356.              (* Number of Messages Tossed to Msg Board *)
  1357.           tossednode   : array[1..maxnodes] of longint;
  1358.              (* Number of Messages Tossed to EchoArea Node *)
  1359.        end;
  1360.  
  1361.     (* **********************************************************
  1362.  
  1363.        Filename:    <systempath>EXITINFO.<node>
  1364.  
  1365.        Description: Used by Ezycom in Type 15 exits to return
  1366.                     Used by Ezycom in Type 7 exits for door
  1367.                        information
  1368.  
  1369.        ********************************************************** *)
  1370.  
  1371.        exitinforecord = record
  1372.           baud           : word; (* Speed between Modem/Modem *)
  1373.           lockedbaud     : word; (* Speed between Computer/Modem *)
  1374.           comport        : byte; (* Comport 1 = Com1, etc *)
  1375.           efficiency     : word; (* Baud Rate efficiency *)
  1376.           userrecord     : word; (* User Record Number (0=User1) *)
  1377.           userinfo       : usersrecord;
  1378.           userextra      : usersextrarecord;
  1379.           extraspace     : array[1..320-sizeof(usersextrarecord)] of byte;
  1380.              (* this space will be used when the userextrarecord
  1381.                 increases, thus keeping most utilities still
  1382.                 compatiable with the exitinfo *)
  1383.           sysopname,             (* Sysop's Name *)
  1384.           sysopalias     : userstring;
  1385.           system         : string[40];
  1386.           downloadlimit  : word; (* Maximum Download Limit *)
  1387.           timelimit      : word; (* Daily Time Limit *)
  1388.           timetakenevent : word;
  1389.              (* Number of Minutes Taken from User for Event *)
  1390.           timecreated    : longint;
  1391.              (* Number of Seconds since Midnight *)
  1392.           timeofnextevent   : longint;
  1393.              (* Number of Seconds since Midnight *)
  1394.           timetillnextevent : longint;
  1395.              (* Number of Seconds after Time Created *)
  1396.           dayofnextevent : byte;
  1397.              (* 0 = Sunday
  1398.                 ..........
  1399.                 6 = Saturday
  1400.                 7 = NOEVENT *)
  1401.           errorlevelofnextevent : byte;
  1402.              (* Errorlevel to return from next event *)
  1403.           ratio          : byte; (* File Ratio *)
  1404.           credit         : word; (* File Ratio Credit *)
  1405.           ratiok         : byte; (* Kilobyte Ratio *)
  1406.           creditk        : word; (* Kilobyte Ratio Credit *)
  1407.           regodays       : word; (* Registration Days *)
  1408.           creditmess     : word; (* Post Call Ratio Credit *)
  1409.           mess           : word; (* Post Call Ratio *)
  1410.           logintimedate  : datetime; (* Login Datetime *)
  1411.           stack          : array[1..20] of str8; (* Menu Stack *)
  1412.           stackpos       : byte; (* Menu Stack Position (0 = No Stack) *)
  1413.           curmenu        : str8; (* Current Menu *)
  1414.           oldpassword    : string[15];
  1415.           limitrecnum    : word; (* Limits Record Being Used *)
  1416.           baudrecnum     : byte; (* BaudRate Record Being Used *)
  1417.           freespace2     : char;
  1418.           maxpages       : byte; (* Maximum Pages *)
  1419.           pagedsysop     : byte; (* Number of Times User has Paged Sysop *)
  1420.           wantchat       : boolean;
  1421.           pagestart,
  1422.           pageend        : longint; (* Number of Seconds since Midnight *)
  1423.           pagelength     : byte; (* Page Length *)
  1424.           echoentered,
  1425.           netentered,
  1426.           nextsysop      : boolean;
  1427.           inactivitytime : word; (* Seconds *)
  1428.           protrecnum     : byte;
  1429.              (* Default Protocol Record Number 0=NoDefault *)
  1430.           protname       : string[15]; (* Default Protocol Name *)
  1431.           didwhat        : byte; (* Didwhat flag for Todays Callers *)
  1432.           pagereason     : string[60];
  1433.           mtasker        : byte;
  1434.           iemsi_session  : boolean;
  1435.           iemsi_req1,
  1436.              (* Bit 0 = News
  1437.                     1 = Mail
  1438.                     2 = File
  1439.                     3 = Clrscr
  1440.                     4 = Quiet
  1441.                     5 = More
  1442.                     6 = FSE
  1443.                     7 = [Reserved] *)
  1444.           iemsi_req2,
  1445.              (* Bit 0-7 = [Reserved] *)
  1446.           iemsi_scrlen   : byte;
  1447.              (* Screen Length for current session
  1448.                 If NOIEMSI session, this is set to the
  1449.                    users screen length *)
  1450.           iemsi_prot,
  1451.              (* Bit 0 = ZModem
  1452.                     1 = SEAlink
  1453.                     2 = Kermit *)
  1454.           iemsi_crt,
  1455.              (* 0 = TTY
  1456.                 1 = ANSI
  1457.                 2 = AVT0+
  1458.                 3 = VT100
  1459.                 4 = VT52 *)
  1460.           iemsi_cap      : byte;
  1461.              (* Bit 0 = CHT
  1462.                     1 = MNU
  1463.                     2 = TAB
  1464.                     3 = ASCII8 *)
  1465.           pagesound      : boolean;
  1466.           freespace      : array[1..99] of byte;
  1467.        end;
  1468.  
  1469.        sysinforecord = record
  1470.           callcount      : longint;
  1471.           lastcaller     : userstring;
  1472.           filessizek     : longint; (* Updated by Ezyff -C *)
  1473.           newusers,
  1474.           newfiles,
  1475.           newmessages    : word;    (* Does NOT include Inbound Echomail *)
  1476.           lastalias      : userstring;
  1477.           laststarttime  : word;
  1478.           extraspace     : array[1..80] of byte;
  1479.        end;
  1480.  
  1481.  
  1482.  
  1483. const
  1484.     fnoinherit = 128;  {      No Interitence Flag }
  1485.     fdenyall   = 16;   {      These are MUTUALLY EXCLUSIVE!!!!   }
  1486.     fdenywrite = 32;   {      Only ONE of THESE SHOULD BE USED   }
  1487.     fdenynone  = 64;   {                                         }
  1488.     fdenyread  = 48;   {                                         }
  1489.     freadonly  = 0;               {     THESE ALSO!!!  }
  1490.     fwriteonly = 1;               {                    }
  1491.     freadwrite = 2;               {                    }
  1492.  
  1493. (*
  1494.  
  1495. *****************************
  1496. Sample PASCAL Source Code for
  1497. location of CONFIG, and
  1498. for date conversion.
  1499. *****************************
  1500.  
  1501. **************************
  1502. Returns True if file found
  1503. **************************
  1504.  
  1505. function find(path : maxstr) : boolean;
  1506.  
  1507. var
  1508.    srec : searchrec;
  1509.  
  1510. begin
  1511.    findfirst(path,anyfile,srec);
  1512.    if doserror = 0
  1513.       then find := true
  1514.       else find := false;
  1515. end;
  1516.  
  1517. ****************************************************
  1518. Returns the path of where to find CONFIG
  1519.  
  1520. ie  findw("CONFIG") would return the path of where
  1521. it can be found.  An additionial FIND should be done
  1522. on the result, as there may not be a CONFIG in the
  1523. system dir.
  1524.  
  1525. itos(x : longint) is simply a function that returns
  1526. the number in a string format.
  1527.  
  1528. node is the variable containing the current node
  1529.  
  1530. systempath is the path where the environment variable
  1531. EZY points to.  If not present, it is the current
  1532. directory on start up.
  1533.  
  1534. ****************************************************
  1535.  
  1536.  
  1537. function findw(s : maxstr) : maxstr;
  1538.  
  1539. begin
  1540.    if find(systempath + s + '.' + itos(node)) then
  1541.       findw := systempath + s + '.' + itos(node) else
  1542.       if find(s + '.EZY') then
  1543.          findw := s + '.EZY' else
  1544.             findw := systempath + s + '.EZY';
  1545. end;
  1546.  
  1547. ***********************
  1548. Checks for a valid date
  1549. ***********************
  1550.  
  1551. function checkdate(yy,mm,dd : word) : boolean;
  1552.  
  1553. const
  1554.    daysinmonth : array[1..12] of word =
  1555.       (31,29,31,30,31,30,31,31,30,31,30,31);
  1556.  
  1557. begin
  1558.    if (mm < 1) or (mm > 12) then
  1559.       begin
  1560.          checkdate := false;
  1561.          exit;
  1562.       end;
  1563.    if (dd < 1) or (dd > daysinmonth[mm]) then
  1564.       begin
  1565.          checkdate := false;
  1566.          exit;
  1567.       end;
  1568.    if (yy < 1900) then
  1569.       begin
  1570.          checkdate := false;
  1571.          exit;
  1572.       end;
  1573.    if ((yy mod 4 <> 0) and (dd = 29) and (mm=2)) then
  1574.       checkdate := false else
  1575.       checkdate := true;
  1576. end;
  1577.  
  1578. ***********************
  1579. Converts a Date to Word
  1580. ***********************
  1581.  
  1582. function datetoword(yy,mm,dd : word) : word;
  1583.  
  1584. var
  1585.    tofield        : word;
  1586.    tempbyte       : byte;
  1587.  
  1588. begin
  1589.    if not checkdate(yy,mm,dd) then
  1590.       begin
  1591.          datetoword := 65535;
  1592.          exit;
  1593.       end;
  1594.    tofield := dd - 1;
  1595.    tofield := tofield + ((mm - 1) shl 5);
  1596.    if (yy < 1980) or (yy > (1980 + 127)) then
  1597.       begin
  1598.          datetoword := 65535;
  1599.          exit;
  1600.       end;
  1601.    yy := yy - 1980;
  1602.    tofield := tofield + (yy shl 9);
  1603.    datetoword := tofield;
  1604. end;
  1605.  
  1606. ***********************************
  1607. Converts a Word to a DATE
  1608.  
  1609. If date is ok then true is returned
  1610. ***********************************
  1611.  
  1612. function wordtodate(temp : word;var yy,mm,dd : word) : boolean;
  1613.  
  1614. begin
  1615.    if (temp = 65535) then
  1616.       begin
  1617.          wordtodate := false;
  1618.          exit;
  1619.       end else
  1620.       wordtodate := true;
  1621.    dd   := temp and 31 + 1;
  1622.    temp := temp shr 5;
  1623.    mm   := temp and 15 + 1;
  1624.    temp := temp shr 4;
  1625.    yy   := (temp and 127) + 1980;
  1626. end;
  1627.  
  1628. *)
  1629.